import { defineStore } from "pinia";
import {LANG} from "@/constant";
import {getItem, setItem} from "@/utils/storage.ts";

export const useAppStore = defineStore('app', {
    state: () => {
        return {
            sidebarOpened: true,
            language: getItem(LANG) || 'zh', // 防止刷新丢失
            tagsViewList: [],

            loading:false,
            zoomRatio:1, // height缩放
            zoomRatioW:1, // width缩放
            zoomRatioCenter:'0 0', // 缩放中心
        }
    },
    getters:{
    },
    actions:{
        triggerSidebarOpened() {
            this.sidebarOpened = !this.sidebarOpened
        },
        /**
         * 设置国际化
         */
        setLanguage(lang:string) {
            setItem(LANG, lang)
            this.language = lang
        },
        /**
         * 添加 tags
         */
        addTagsViewList(tag) {
            const isFind = this.tagsViewList.find((item) => {
                return item.path === tag.path
            })
            // 处理重复 如果isFind是false  就表示没有，就存进去
            if (!isFind) {
                this.tagsViewList.push(tag)
                // localstorage 保存
                // setItem(TAGS_VIEW, this.tagsViewList)
            }
        },
        /**
         * 为指定的 tag 修改 title
         */
        changeTagsView( { index, tag }) {
            this.tagsViewList[index] = tag
            // setItem(TAGS_VIEW, this.tagsViewList)
        },
        /**
         * 删除 tag
         * @param {type: 'other'||'right'||'index', index: index} payload
         */
        removeTagsView( payload) {
            if (payload.type === 'index') {
                // 删除当前项
                this.tagsViewList.splice(payload.index, 1)
                return
            } else if (payload.type === 'other') {
                // 删除当前位置加1  往后的所有的
                this.tagsViewList.splice(
                    payload.index + 1,
                    this.tagsViewList.length - payload.index + 1
                )
                // 再删除 0 到当前未知的 （删除左侧）
                this.tagsViewList.splice(0, payload.index)
            } else if (payload.type === 'right') {
                // 删除当前位置加1  往后的所有的
                this.tagsViewList.splice(
                    payload.index + 1,
                    this.tagsViewList.length - payload.index + 1
                )
            }
            // setItem(TAGS_VIEW, this.tagsViewList)
        },
        changeZoomRatio(val){
            this.zoomRatio=val
        },
        changeZoomRatioW(val){
            this.zoomRatioW=val
        },
        changeZoomRatioCenter(val){
            this.zoomRatioCenter = val
        },
        changeLoading(val){
            this.loading = val
        }
    },
    persist:{
        paths:['language','tagsViewList']
    }
})
